/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.tri.gui.ListadosWorkers;

import java.util.Date;
import javax.swing.table.AbstractTableModel;
import org.tri.entity.Establecimiento;
import org.tri.entity.Productor;
import org.tri.gui.worker.TableFillListener;

/**
 *Clase abstracta que modelo el comportamiento base de los listados worker.
 * Se encargan de realizar en background las busquedas de datos y asociarlas
 * a un modelo de tabla.
 * 
 * @author giaco
 */
public abstract class AbstractListadosWorker {
    AbstractTableModel modelo;
        
    /**
     * Constructor de la clase
     */
    public AbstractListadosWorker(){
        
    }//end contructor AbstractListadosWorker
    
    /**
     * Metodo que ejecuta la busqueda y devuelve el modelo de tabla. Se debe
     * sobreescribir en cada subclase.
     * @param establecimiento Establecimiento con el que se trabaja.
     * @param fechaInicio Date fecha de inicio para filtrar la busqueda.
     * @param fechaFin Date fecha de fin para filtrar la busqueda.
     * 
     * @return AbstractTableModel modelo con datos de la busqueda
     */
    public abstract AbstractTableModel execute(Establecimiento establecimiento,
                                               Date fechaInicio, Date fechaFin,  
                                               TableFillListener listener );
    
    /**
     * Metodo que ejecuta la busqueda y devuelve el modelo de tabla. Se debe
     * sobreescribir en cada subclase.
     * @param productor Productor con el que se trabaja.
     * @param fechaInicio Date fecha de inicio para filtrar la busqueda.
     * @param fechaFin Date fecha de fin para filtrar la busqueda.
     * 
     * @return AbstractTableModel modelo con datos de la busqueda
     */
    public abstract AbstractTableModel execute(Productor productor, 
                                               Date fechaInicio, Date fechaFin,  
                                               TableFillListener listener );
    
}//end clase AbstractListadosWorker
